-
Notifications
You must be signed in to change notification settings - Fork 26.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds inline script functionality to next/script
for worker
and beforeInteractive
strategies
#36364
Conversation
41ad854
to
63148ff
Compare
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
buildDuration | 15s | 14.9s | -126ms |
buildDurationCached | 6.1s | 6.1s | -10ms |
nodeModulesSize | 463 MB | 463 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.459 | 3.461 | 0 |
/ avg req/sec | 722.68 | 722.39 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.124 | 1.166 | |
/error-in-render avg req/sec | 2223.3 | 2143.41 |
Client Bundles (main, webpack) Overall decrease ✓
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
925.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 28.6 kB | 28.6 kB | -7 B |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 72.3 kB | 72.3 kB | -7 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 308 B | 308 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 3.08 kB | 3.08 kB | ✓ |
head-HASH.js gzip | 359 B | 359 B | ✓ |
hooks-HASH.js gzip | 920 B | 920 B | ✓ |
image-HASH.js gzip | 5.71 kB | 5.71 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.64 kB | 2.64 kB | ✓ |
routerDirect..HASH.js gzip | 320 B | 320 B | ✓ |
script-HASH.js gzip | 391 B | 391 B | ✓ |
withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16.3 kB | 16.3 kB | ✓ |
Client Build Manifests
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
index.html gzip | 531 B | 533 B | |
link.html gzip | 544 B | 546 B | |
withRouter.html gzip | 526 B | 528 B | |
Overall change | 1.6 kB | 1.61 kB |
Diffs
Diff for main-HASH.js
@@ -3198,14 +3198,12 @@
src = _src === void 0 ? "" : _src,
_onLoad = props.onLoad,
onLoad = _onLoad === void 0 ? function() {} : _onLoad,
- dangerouslySetInnerHTML = props.dangerouslySetInnerHTML,
_strategy = props.strategy,
strategy = _strategy === void 0 ? "afterInteractive" : _strategy,
onError = props.onError,
restProps = _objectWithoutProperties(props, [
"src",
"onLoad",
- "dangerouslySetInnerHTML",
"strategy",
"onError"
]);
Diff for index.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
Diff for link.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
Diff for withRouter.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
buildDuration | 17s | 17.1s | |
buildDurationCached | 6s | 6.1s | |
nodeModulesSize | 463 MB | 463 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.473 | 3.463 | -0.01 |
/ avg req/sec | 719.92 | 721.87 | +1.95 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.134 | 1.133 | 0 |
/error-in-render avg req/sec | 2204.11 | 2205.76 | +1.65 |
Client Bundles (main, webpack) Overall decrease ✓
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
925.HASH.js gzip | 178 B | 178 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
main-HASH.js gzip | 29.1 kB | 29.1 kB | -6 B |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.9 kB | 72.9 kB | -6 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 179 B | 179 B | ✓ |
amp-HASH.js gzip | 312 B | 312 B | ✓ |
css-HASH.js gzip | 324 B | 324 B | ✓ |
dynamic-HASH.js gzip | 3.08 kB | 3.08 kB | ✓ |
head-HASH.js gzip | 357 B | 357 B | ✓ |
hooks-HASH.js gzip | 921 B | 921 B | ✓ |
image-HASH.js gzip | 5.76 kB | 5.76 kB | ✓ |
index-HASH.js gzip | 261 B | 261 B | ✓ |
link-HASH.js gzip | 2.76 kB | 2.76 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
script-HASH.js gzip | 392 B | 392 B | ✓ |
withRouter-HASH.js gzip | 317 B | 317 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 16.5 kB | 16.5 kB | ✓ |
Client Build Manifests
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
_buildManifest.js gzip | 458 B | 458 B | ✓ |
Overall change | 458 B | 458 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | housseindjirdeh/next.js bug/#36318 | Change | |
---|---|---|---|
index.html gzip | 529 B | 529 B | ✓ |
link.html gzip | 543 B | 543 B | ✓ |
withRouter.html gzip | 526 B | 526 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
Diffs
Diff for main-HASH.js
@@ -3198,14 +3198,12 @@
src = _src === void 0 ? "" : _src,
_onLoad = props.onLoad,
onLoad = _onLoad === void 0 ? function() {} : _onLoad,
- dangerouslySetInnerHTML = props.dangerouslySetInnerHTML,
_strategy = props.strategy,
strategy = _strategy === void 0 ? "afterInteractive" : _strategy,
onError = props.onError,
restProps = _objectWithoutProperties(props, [
"src",
"onLoad",
- "dangerouslySetInnerHTML",
"strategy",
"onError"
]);
Diff for index.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
Diff for link.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
Diff for withRouter.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+ src="/_next/static/chunks/main-0dbd47e46b216587.js"
defer=""
></script>
<script
@@ -500,6 +537,44 @@ export class Head extends Component< | |||
] | |||
} | |||
|
|||
getBeforeInteractiveInlineScripts() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@janicklas-ralph Would it make more sense if I just move the src
or dangerouslyInnerHtml
logic I wrote in getPreNextWorkerScripts
to a separate function and reuse that for beforeInteractive
scripts? We wouldn't need this separate getter if we did that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure. For beforeInteractive
we have two functions, one for inline and one for regular scripts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Noted. As discussed, the two functions are needed here because of ordering so I'll leave it as is :)
next/script
for worker
and beforeInteractive
strategies
8c876e1
to
fbc3d07
Compare
Failing test suitesCommit: 3537e0d
Expand output● experimental.nextScriptWorkers: true with invalid script › Warning is shown when no src or inline script is provided
Read more about building and testing Next.js in contributing.md. |
3537e0d
to
3f29ac0
Compare
Adds inline script functionality to
next/script
forworker
andbeforeInteractive
strategies.beforeInteractive
- before close of <head> tag #26591